package bsh;

import java.util.List;

/**
 * A {@link Trait} that has its classes defined by a {@link ClassLoader}
 * 
 * @author takeshi
 */
public interface LoadedTrait extends Trait {

    /**
     * @return the class that represents this {@link Trait}'s interface
     */
    Class<?> traitInterface();

    /**
     * @return the class that actually implements the methods
     */
    Class<?> implementor();

    /**
     * @return list of inherited {@link Trait}
     */
    List<LoadedTrait> implementedTraits();

}
